﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace ECommerce.DAO.SQL.Contabilidad.Carritos
{
    public static class ItemCarrito
    {
        //Select Methods Helpers
        public static ECommerce.Model.Contabilidad.Carritos.ItemCarrito[] GetItemsCarrito(string StoreProcedure, ECommerce.DAO.SQL.Parámetro[] Parámetros)
        {
            ECommerce.Model.Contabilidad.Carritos.ItemCarrito ItemCarrito = new ECommerce.Model.Contabilidad.Carritos.ItemCarrito();
            Type DynamicType = ItemCarrito.GetType();
            return ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.GetItemsCarritoFromObjects(ECommerce.DAO.SQL.SqlHelper.Get(StoreProcedure, Parámetros, DynamicType));
        }
        public static ECommerce.Model.Contabilidad.Carritos.ItemCarrito[] GetItemsCarritoFromObjects(ECommerce.Model.Objeto[] Objetos)
        {
            List<ECommerce.Model.Contabilidad.Carritos.ItemCarrito> result = new List<ECommerce.Model.Contabilidad.Carritos.ItemCarrito>();
            ECommerce.Model.Contabilidad.Carritos.ItemCarrito ItemCarrito;
            foreach (ECommerce.Model.Objeto Objeto in Objetos)
            {
                ItemCarrito = new ECommerce.Model.Contabilidad.Carritos.ItemCarrito();
                ItemCarrito = (ECommerce.Model.Contabilidad.Carritos.ItemCarrito)Objeto;
                if (ItemCarrito != null)
                    if (ItemCarrito.Id != 0)
                        result.Add(ItemCarrito);
            }
            return result.ToArray();
        }

        //Select Methods
        public static ECommerce.Model.Contabilidad.Carritos.ItemCarrito GetItemCarritoById(int Id)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Id);
            Parámetros.Add(Parámetro);
            ECommerce.Model.Contabilidad.Carritos.ItemCarrito[] Carritos = ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.GetItemsCarrito("GetItemCarritoById", Parámetros.ToArray());
            if (Carritos != null)
                if (Carritos.Length > 0)
                    return Carritos[0];
            return null;
        }
        public static ECommerce.Model.Contabilidad.Carritos.ItemCarrito[] GetItemsCarritoDelSistema()
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            return ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.GetItemsCarrito("GetItemCarritoesDelSistema", Parámetros.ToArray());
        }
        public static ECommerce.Model.Contabilidad.Carritos.ItemCarrito[] GetItemsCarritoByCarritoId(int CarritoId)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new Parámetro("@Id", System.Data.SqlDbType.BigInt, CarritoId);
            Parámetros.Add(Parámetro);
            return ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.GetItemsCarrito("GetItemCarritosByCarritoId", Parámetros.ToArray());
        }

        //Insert Methods
        public static int SetItemCarrito(ECommerce.Model.Contabilidad.Carritos.ItemCarrito ItemCarrito)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, ItemCarrito.Id);
            Parámetros.Add(Parámetro);
            return ECommerce.DAO.SQL.SqlHelper.Insert("SetItemCarrito", Parámetros.ToArray());
        }
        public static void AddItemCarritoToCarrito(ECommerce.Model.Contabilidad.Carritos.ItemCarrito ItemCarrito, ECommerce.Model.Contabilidad.Carritos.Carrito Carrito)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdCarrito", System.Data.SqlDbType.BigInt, Carrito.Id);
            Parámetros.Add(Parámetro);
            Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdItemCarrito", System.Data.SqlDbType.BigInt, ItemCarrito.Id);
            Parámetros.Add(Parámetro);
            ECommerce.DAO.SQL.SqlHelper.Insert("AddItemCarritoToCarrito", Parámetros.ToArray());
        }
        
        //Execute Methods
        public static void DelItemCarritoFromCarrito(ECommerce.Model.Contabilidad.Carritos.Carrito Carrito, ECommerce.Model.Contabilidad.Carritos.ItemCarrito ItemCarrito)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdCarrito", System.Data.SqlDbType.BigInt, Carrito.Id);
            Parámetros.Add(Parámetro);
            Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdItemCarrito", System.Data.SqlDbType.BigInt, ItemCarrito.Id);
            Parámetros.Add(Parámetro);
            ECommerce.DAO.SQL.SqlHelper.Execute("DelItemCarritoFromCarrito", Parámetros.ToArray());
        }
    }
}
